Multiple Function Arguments


Cada función en Python recibe un predeterminado número de argumentos, si es declarada normalmente, como esta:

def myfunction(first, second, third):
    # Haz algo con las tres variables
    ...

Es posible declarar funciones que reciban un número variable de argumentos, usando la siguiente sintaxis:

def foo(first, second, third, *therest):
    print("First: %s" % first)
    print("Second: %s" % second)
    print("Third: %s" % third)
    print("And all the rest... %s" % list(therest))

La variable "therest" es una lista de variables, que recibe todos los argumentos que fueron dados a la función "foo" después de los tres primeros argumentos. Así que llamando foo(1,2,3,4,5) imprimiremos:

def foo(first, second, third, *therest):
    print("First: %s" %(first))
    print("Second: %s" %(second))
    print("Third: %s" %(third))
    print("And all the rest... %s" %(list(therest)))

foo(1,2,3,4,5)

También es posible enviar argumentos de funciones por clave, para que el orden del argumento no importa, usando la siguiente sintaxis. El siguiente código produce la siguiente salida:

The sum is: 6 Result: 1

def bar(first, second, third, **options):
    if options.get("action") == "sum":
        print("The sum is: %d" %(first + second + third))

    if options.get("number") == "first":
        return first

result = bar(1, 2, 3, action = "sum", number = "first")
print("Result: %d" %(result))

La función "bar" recibe tres argumentos. Si se recibe un argumento "action" adicional, y ordena que se haga un resumen de los números, se imprimirá el resumen. Alternativamente, la función tambien debe devolver el primer argumento, si el valor del parámetro "number", pasado a la función, es igual a "first".

Exercise

Rellena las funciones foo y bar para que puedan recibir una cantidad variable de argumentos (tres o más) La función foo debe devolver la cantidad de argumentos extra recibidos. bar debe devolver True si el argumento con la clave magicnumber vale 7, y False en cualquier otro caso.


Copyright © learnpython.org. Read our Terms of Use and Privacy Policy